//package com.cdinternationalcompany.syhapp.common.web
//
//import android.annotation.SuppressLint
//import android.content.*
//import android.net.Uri
//import android.os.*
//import android.text.Html
//import android.text.TextUtils
//import android.util.Log
//import android.view.KeyEvent
//import android.view.View
//import android.webkit.*
//import android.widget.FrameLayout
//import android.widget.TextView
//import androidx.appcompat.app.AppCompatActivity
//import com.cdinternationalcompany.syhapp.R
//import com.kaopiz.kprogresshud.KProgressHUD
//import org.json.JSONObject
//
//
//open class WebActivity : AppCompatActivity() {
//
//    companion object {
//        private val TAG = "Push.Sdk.${WebActivity::class.java.simpleName}"
//    }
//
//    private lateinit var mWebView: WebView
//    private lateinit var mErrorContainer: FrameLayout
//    private lateinit var mErrorText: TextView
//    private lateinit var kProgressHUD: KProgressHUD
//    private var mIsLoadFinish = false
//
//    private lateinit var mGalleryResultCallback: OnActivityResultCallback
//    private lateinit var mPermissionCallback: OnPermissionCallback
//
//    private var mValueCallback: ValueCallback<Array<Uri>>? = null
//
//    private fun setStatusBar() {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//            window.statusBarColor = resources.getColor(android.R.color.white)
//            window.decorView.systemUiVisibility =
//                    (/*View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or */View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
//        }
//    }
//
//    @SuppressLint("SetJavaScriptEnabled")
//    override fun onCreate(savedInstanceState: Bundle?) {
//        super.onCreate(savedInstanceState)
//        setStatusBar()
//        setContentView(R.layout.activity_main)
//
//        kProgressHUD = KProgressHUD.create(this).apply {
//            title = "加载中"
//        }
//        mErrorContainer = findViewById<FrameLayout>(R.id.errorContainer)
//        mErrorText = findViewById<TextView>(R.id.errorText)
//        mWebView = findViewById<WebView>(R.id.webView).apply {
//            settings.javaScriptCanOpenWindowsAutomatically = true
//            settings.javaScriptEnabled = true
//            settings.mediaPlaybackRequiresUserGesture = false
//            settings.domStorageEnabled = true
//            settings.cacheMode = WebSettings.LOAD_NO_CACHE
//            settings.allowFileAccess = true
//            settings.allowContentAccess = true
//            settings.allowFileAccessFromFileURLs = true
//            settings.userAgentString = "${settings.userAgentString} ShareApp"
//            settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
//            webChromeClient = object : WebChromeClient() {
//
//                override fun onConsoleMessage(consoleMessage: ConsoleMessage?): Boolean {
//                    Log.d(TAG, "message->  ${consoleMessage?.message()}")
//                    return true
//                }
//
//                override fun onConsoleMessage(
//                        message: String?,
//                        lineNumber: Int,
//                        sourceID: String?
//                ) {
//                    Log.d(TAG, "message->  $message,   lineNumber -> $lineNumber ")
//                    super.onConsoleMessage(message, lineNumber, sourceID)
//                }
//
//                override fun onShowFileChooser(
//                        webView: WebView?,
//                        filePathCallback: ValueCallback<Array<Uri>>?,
//                        fileChooserParams: FileChooserParams?
//                ): Boolean {
//                    mValueCallback = filePathCallback
//                    return true
//                }
//            }
//            webViewClient = object : WebViewClient() {
//                override fun shouldOverrideUrlLoading(
//                        view: WebView?, request: WebResourceRequest?
//                ): Boolean {
//                    Log.d(
//                            TAG,
//                            "shouldOverrideUrlLoading :: loadUrl  -> ${request?.url}, ---> ${mWebView.canGoBack()}"
//                    )
//                    val uri = request?.url ?: return false
//                    if (uri.scheme == "http" || uri.scheme == "https") {
//                        return super.shouldOverrideUrlLoading(view, request)
//                    } else {
//                        Log.d(TAG, "Other scheme")
//                        runOnUiThread {
//                            val intent = Intent().apply {
//                                action = "android.intent.action.VIEW"
//                                data = uri
//                            }
//                            if (intent.resolveActivity(packageManager) != null) {
//                                try {
//                                    startActivity(intent)
//                                } catch (e: Exception) {
//                                    e.printStackTrace()
//                                }
//
//                            }
//                        }
//                        return true
//                    }
//                }
//
//                override fun onPageFinished(view: WebView?, url: String?) {
//                    Log.d(TAG, "onPageFinished  -> $url")
//                    super.onPageFinished(view, url)
//                    dismissLoading()
//                }
//
//                override fun onReceivedError(
//                        view: WebView?,
//                        request: WebResourceRequest?,
//                        error: WebResourceError?
//                ) {
//                    dismissLoading()
//                    super.onReceivedError(view, request, error)
//                }
//            }
//        }
//
//        loadHtml()
//
//        kProgressHUD.show()
//    }
//
//    open fun loadHtml() {
//        mWebView.loadUrl(getUrl())
//    }
//
//    protected fun loadContent(htmlCodeContent: String) {
//        mWebView.loadData(Html.fromHtml(htmlCodeContent).toString(), "text/html", "UTF-8")
//    }
//
//    private fun dismissLoading() {
//        mIsLoadFinish = true
//        if (this@WebActivity::kProgressHUD.isInitialized && kProgressHUD.isShowing) {
//            kProgressHUD.dismiss()
//        }
//    }
//
//    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
//        super.onActivityResult(requestCode, resultCode, data)
//        if (this::mGalleryResultCallback.isInitialized) {
//            mGalleryResultCallback.onActivityResult(requestCode, resultCode, data)
//        }
//    }
//
//    override fun onRequestPermissionsResult(
//            requestCode: Int,
//            permissions: Array<out String>,
//            grantResults: IntArray
//    ) {
//        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
//        if (this::mPermissionCallback.isInitialized) {
//            mPermissionCallback.permissionCallback(requestCode, permissions, grantResults)
//        }
//    }
//
//    override fun onNewIntent(intent: Intent?) {
//        super.onNewIntent(intent)
//        if (intent == null) {
//            return
//        }
//
//        val extras = intent.getStringExtra("extras")
//        if (TextUtils.isEmpty(extras)) {
//            return
//        }
//        try {
//            val json = JSONObject(extras)
//            mWebView.loadUrl(json.getString("url"))
//        } catch (e: Exception) {
//            return
//        }
//    }
//
//    private fun getUrl(): String {
//        return intent.getStringExtra("url") ?: ""
//    }
//
//    override fun onDestroy() {
//        if (this::mWebView.isInitialized) {
//            mWebView.destroy()
//        }
//        super.onDestroy()
//    }
//
//    override fun onPause() {
//        if (this::mWebView.isInitialized) {
//            mWebView.onPause()
//        }
//        super.onPause()
//    }
//
//    override fun onResume() {
//        if (this::mWebView.isInitialized) {
//            mWebView.onResume()
//        }
//        super.onResume()
//    }
//
//    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
//        if (canGoBack()) return true
//        return super.onKeyDown(keyCode, event)
//    }
//
//    private fun canGoBack(): Boolean {
//        if (this::mWebView.isInitialized && mWebView.canGoBack()) {
//            mWebView.goBack()
//            return true
//        }
//        return false
//    }
//
//    interface OnActivityResultCallback {
//        fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
//    }
//
//    interface OnPermissionCallback {
//        fun permissionCallback(
//                requestCode: Int,
//                permissions: Array<out String>,
//                grantResults: IntArray
//        )
//    }
//
//}
